#pragma once

#include "Controller.h"

#include <boost/signal.hpp>
#include "../domain/models/CardsCollection.h"
#include "../domain/models/Player.h"
#include "../views/abstract/IAccusationView.h"

namespace Controllers {

	class CardsDealController: public Controller
	{
		Players::PlayersQueue players;
		Cards::CardsCollection cards;

	public:
		CardsDealController(Players::PlayersQueue players, Cards::CardsCollection cards);

		Cards::CardSet perform();
	protected:
		template <typename T> Cards::Card* pickSearchedCard(T&);
		void dealRemainingCards(std::vector<Cards::Card*>&);
	};

}

